package cn.lifemile.redis;

import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

/**
 * JedisPool 配置
 *
 * @author shawn
 */
public class MyJedisPoolConfig {

    private MyJedisPoolConfig() {
    }


    /**
     * redis主机的ip
     */
    private static String host;

    /**
     * redis主机的端口号
     */
    private static int port;

    /**
     * 登录口令
     */
    private static String auth;
    /**
     * 连接超时和读写超时（单位ms）
     * 读写超时即：redis对该命令执行时间太长，超过设定时间后就放弃本次请求
     */
    private static int connAndReadWriteTimeOut;

    /**
     *
     */
    private static class InnerClass {

        private static JedisPool jedisPool = new JedisPool(getConfig(), host, port, connAndReadWriteTimeOut, auth);

        private static JedisPoolConfig getConfig() {
            JedisPoolConfig poolConfig = new JedisPoolConfig();
            //========= jedisPool的一些配置=============================
            poolConfig.setMaxTotal(10000);//最大连接数
            poolConfig.setMaxIdle(50);//最多空闲数
            poolConfig.setMaxWaitMillis(5 * 1000);//当池中没有连接时，最多等待5秒
            return poolConfig;
        }
    }

    /**
     * 返回jedisPool实例
     *
     * @return
     */
    public static JedisPool getJedisPool() {
        return InnerClass.jedisPool;
    }

}
